As a flash memory technology continuously mature, the flash memory technology is widely applied to the field of solid-state storage. However, there may be multiple bit errors occurring in data stored in a flash memory. If data read from a flash memory physical page is directly returned to an upper-layer service, the service may fail.
Error checking and correction (ECC) protection needs to be performed on service data, that is, ECC coding is performed on the service data, and then the data obtained after the ECC coding is written into the flash memory in order to ensure that the data returned to the upper-layer service is correct and valid. Each time the data is read, ECC is performed on the data read from the flash memory in order to improve reliability of the service data.
However, an error correction capability of the ECC protection is limited, and can be effective only when a quantity of bit errors occurring in page data does not exceed a specific upper limit. If a quantity of incorrect bits in a read medium particle exceeds the error correction capability of the ECC error-correcting code, originally stored data information cannot be recovered using the error-correcting code, thereby causing a loss of the stored information.
To avoid the loss of the stored information, a solution frequently used in the other approaches is Read Retry, that is, a mechanism in which if the original information cannot be recovered using the error-correcting code after a status of a medium particle is read using a default read voltage threshold, the status of the medium particle is read again by adjusting the read voltage threshold and the original information is recovered using the error-correcting code.
In other approaches, the read voltage threshold needs to be adjusted many times to try to read data, thereby exponentially increasing a read delay (usually increasing from the order of microseconds to the order of milliseconds), and significantly degrading performance of a solid state drive (SSD) storage system.